汽车UDS诊断之诊断设备在线服务(0x3E)深度剖析 您所在的位置:网站首页 uds 0x31服务 汽车UDS诊断之诊断设备在线服务(0x3E)深度剖析

汽车UDS诊断之诊断设备在线服务(0x3E)深度剖析

2024-07-15 20:17| 来源: 网络整理| 查看: 265

TesterPresent就是诊断设备在线服务,它是最简单的一个诊断服务。

诊断设备在线 服务描述TesterPresent

客户端向某服务端请求来确认此服务端是否在线,客户端有没有跟服务端连接上。

目录

1.英文术语

2.缩写表

3.服务描述

4.请求消息定义 

4.1.请求消息子功能定义

4.2.请求消息数据参数定义

5.肯定响应消息定义

5.1.肯定响应消息数据参数定义

6.否定响应消息定义

6.1.否定响应码

7.服务使用示例

7.1.示例#1-诊断设备在线(抑制肯定响应位 = 假) 

7.1.1.步骤1:诊断设备在线请求

7.1.2.操作汇总

7.2.示例#2-诊断设备在线(抑制肯定响应位 = 真) 

7.2.1.步骤1:诊断设备在线请求

7.2.2.操作汇总

1.英文术语 英文术语翻译TesterPresent诊断设备在线TesterPresent Request SID

诊断设备在线请求SID

ISO14229定义此值为0x3E

sub-function子功能zeroSubFunction零子功能TesterPresent Response SID 

诊断设备在线响应SID

ISO14229定义此值为(0x3E+0x40)

2.缩写表 缩写解释SID服务标识符Cvt

约定值

M 强制的

C 有条件的

U 用户选项

NRC否定响应码 3.服务描述

诊断设备在线服务就是客户端用来确认无服务端是否在线的操作,利用此服务可实现客户端与服务端的一次“握手”。可以直接理解就是  客户端给服务端发诊断设备在线请求消息(问候一下“你好吗”),这时候如果服务端接收到此请求消息,而且此请求消息都符合服务端的条件并且抑制肯定响应位为0,那么服务端就会向客户端回复肯定响应消息(回复一句“我很好”)。

诊断设备在线服务还有一个特殊功能:如果服务端可以在非默认会话模式下,再去请求此服务时,服务端就可以保留在此非默认会话模式下,其实就是将诊断会话计时器S3_{server}中记录的还没有超过5000ms的时间记录清除,让他再去从0开始计时,这时候要想回到默认会话就得再等5000ms。

注:这个特殊功能其实并不是在我们这个服务里边做的,而是诊断会话服务中本身具有的一项特性,即有除诊断会话服务以外的其他诊断请求指令时,而且服务器当前处于非默认会话模式下,诊断会话计时器就是重新进行计时5000ms,这样我们去诊断设备在线请求时,也就是在这个“其他诊断请求指令”之内。

服务白话解读:“我叫你一声,你答应就完了”

4.请求消息定义  请求消息定义A_Data字节参数名称Cvt字节值助记符#1诊断设备在线请求SIDM0x3ETP#2子功能=[零子功能]M0x00/0x80LEV_ZSUBF 

注:子功能字节为0x80表示服务器不能去发肯定响应,即使服务器正常去响应请求,也不能发肯定响应消息。

4.1.请求消息子功能定义

该服务使用子功能参数选择(此字节的bit7表示抑制肯定响应位,下表并没有介绍此位)。

请求消息子功能定义位6-0描述Cvt助记符0x00

零子功能

该值表示此服务不支持除抑制肯定响应消息指示位之外的子功能值。此服务其实是没有子功能字节的,但是因为它需要设置一个抑制肯定响应位(来控制服务器是否需要发出肯定响应消息),所以我们这个服务就设置一个子功能字节,而0-6bit位本身没有实际意义,ISO14229就用0x00来强制规定一下,其他值目前还是没有定义的。

MZSUBF0x01-0x7F

ISOSAEReserved

该值为本文件为未来定义预留。

MISOSAERESRVD 4.2.请求消息数据参数定义

此服务中请求消息中没有数据参数。

5.肯定响应消息定义 肯定响应消息定义A_Data字节参数名称Cvt字节值助记符#1诊断设备在线响应SIDM0x7ETPPR#2子功能 = [零子功能]M0x00 LEV_ZSUBF 5.1.肯定响应消息数据参数定义 肯定响应消息数据参数定义定义

零子功能

此参数与请求消息的子功能参数的位6~0相同。

6.否定响应消息定义 否定响应消息定义A_Data字节参数名称字节值Cvt助记符#1否定响应SID0x7FMSIDNR#2诊断设备在线请求SID0x3EMSIDRQ#3否定响应码0xXXMNRC_ 6.1.否定响应码 此服务支持的否定响应码否定响应码描述助记符0x12

子功能不支持

如果不支持子功能参数,则应发送此否定响应码。

SFNS0x13

消息长度错误或格式无效

如果消息的长度错误,则应发送此否定响应码。

IMLOIF 7.服务使用示例 7.1.示例#1-诊断设备在线(抑制肯定响应位 = 假)  7.1.1.步骤1:诊断设备在线请求

确认服务端有没有跟客户端连接上

诊断设备在线请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

诊断设备在线请求SID

0x3E

TP

#2

子功能 = 零子功能

               抑制肯定响应位 = 假

0x00

ZSUBF

诊断设备在线响应消息

消息方向

服务端→客户端

消息类型

响应

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

诊断设备在线响应SID

0x7E

TPPR

#2

子功能 = 零子功能

0x00

ZSUBF

注意:响应报文是不会有抑制肯定响应位的。

7.1.2.操作汇总

步骤1:诊断设备在线请求

图解:

操作CAN报文实体01234567诊断设备在线请求0x020x3E0x00     客户端肯定响应0x020x7E0x00     服务端

7.2.示例#2-诊断设备在线(抑制肯定响应位 = 真)  7.2.1.步骤1:诊断设备在线请求

确认服务端有没有跟客户端连接上

诊断设备在线请求消息

消息方向

客户端→服务端

消息类型

请求

A_Data字节

描述(所以值为16进制)

字节值

助记符

#1

诊断设备在线请求SID

0x3E

TP

#2

子功能 = 零子功能

               抑制肯定响应位 = 真

0x80

ZSUBF

这时候服务端不会发送肯定响应(其实这时候也无法判定服务端是在线的,因为服务端都没有响应了,客户端无法确认服务端是否响应了自己的请求)。

7.2.2.操作汇总

步骤1:诊断设备在线请求

图解:

操作CAN报文实体01234567诊断设备在线请求0x020x3E0x80     客户端

到这里我们的0x3E服务基本学完了。

以上解释有没有解决大家的疑惑,如果还是觉得有疑惑的地方,欢迎大家踊跃提出,一起分享,共同进步!!!

有CSDN号的也可以帮忙点个关注,我会陆续更新其它UDS服务。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有